// 封装的是具体的接口请求方法
// 注意：每个方法只负责请求一个url地址
import request from '@/utils/request.js'
import qs from 'qs'

/**
 * 注册接口
 * @param {*} param0 { username: 用户名, password: 密码 }
 * @returns Promise对象
 */
export const registerAPI = ({ username, password, repassword }) => {
  return request({
    url: '/api/reg',
    method: 'POST',
    data: qs.stringify({
      username,
      password,
      repassword
    })
  })
  // return request.post('/api/reg', qs.stringify({
  //   username,
  //   password,
  //   repassword
  // }))
}

/**
 * 登录接口
 * @param {*} param0 { username: 用户名, password: 密码 }
 * @returns Promise对象
 */
export const loginAPI = ({ username, password }) => {
  return request.post('/api/login', qs.stringify({
    username,
    password
  }))
}

/**
 * 获取-用户信息
 * @returns Promise对象
 */
export const getUserInfoAPI = () => {
  return request({
    url: '/my/userinfo',
    method: 'GET'
  })
}

/**
 * 获取-侧边栏菜单数据
 * @returns Promise对象
 */
export const getMenusListAPI = () => {
  return request({
    url: '/my/menus',
    method: 'GET'
  })
}

/**
 * 更新-用户基本资料
 * @param {*} param0 { id: 用户id, email: 用户邮箱, nickname: 用户昵称, user_pic: 用户头像地址, username: 用户名 }
 * @returns Promise对象
 */
export const updateUserInfoAPI = ({ id, email, nickname, user_pic, username }) => {
  return request.put('/my/userinfo', qs.stringify({
    id,
    email,
    nickname,
    user_pic,
    username
  }))
}

/**
 * 更新-用户头像
 * @param {*} avatar 头像的base64字符串
 * @returns Promise对象
 */
export const updateUserAvatarAPI = (avatar) => {
  return request({
    url: '/my/update/avatar',
    method: 'PATCH',
    // headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
    // header: { 'Content-Type': 'multipart/form-data' },
    // headers: { 'Content-Type': false },
    data:
      qs.stringify({ avatar: avatar })
  })

  // return request.patch('/my/update/avatar', qs.stringify({ avatar }))
}

/**
 * 更新-用户密码
 * @param {*} param0 { old_pwd: 旧密码, new_pwd: 新密码, re_pwd: 新密码确认 }
 * @returns Promise对象
 */
export const updatePwdAPI = ({ old_pwd, new_pwd, re_pwd }) => {
  // return request.patch('/my/updatepwd', qs.stringify({
  //   oldPwd: old_pwd,
  //   newPwd: new_pwd,
  //   rePwd: re_pwd
  // }))
  return request({
    url: '/my/updatepwd',
    method: 'PATCH',
    // headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
    data: qs.stringify({
      oldPwd: old_pwd,
      newPwd: new_pwd,
      rePwd: re_pwd
    })
  })
}

/**
 * 获取-文章分类
 * @returns Promise对象
 */
export const getArtCateListAPI = () => {
  return request({
    url: '/my/cate/list'
  })
}

/**
 * 增加-文章分类
 * @param {*} param0 { cate_name: 文章分类名字, cate_alias: 文章分类别名 }
 * @returns Promise对象
 */
export const addArtCateAPI = ({ cate_name, cate_alias }) => {
  return request({
    url: '/my/cate/add',
    method: 'POST',
    data: qs.stringify({
      cate_name,
      cate_alias
    })
  })
}

/**
 * 更新-文章分类
 * @param {*} param0 { id: 文章分类id, cate_name: 文章分类名字, cate_alias: 文章分类别名 }
 * @returns Promise对象
 */
export const updateArtCateAPI = ({ id, cate_name, cate_alias }) => {
  return request({
    url: '/my/cate/info',
    method: 'PUT',
    data: qs.stringify({
      id,
      cate_name,
      cate_alias
    })
  })
}

/**
 * 删除-文章分类
 * @param {*} id 要删除的-文章分类id
 * @returns Promise对象
 */
export const delArtCateAPI = (id) => {
  return request({
    url: '/my/cate/del',
    method: 'DELETE',
    params: {
      id
    }
  })
}

// 获取文章列表
export const getArtListAPI = ({ pagenum, pagesize, cate_id, state }) => {
  return request({
    url: '/my/article/list',
    method: 'GET',
    params: {
      pagenum,
      pagesize,
      cate_id,
      state
    }
  })
}

// 删除文章
export const delArticleAPI = (id) => {
  return request({
    url: '/my/article/info',
    method: 'DELETE',
    params: {
      id
    }
  })
}

// 发布文章
export const uploadArticleAPI = (fd) => {
  return request({
    url: '/my/article/add',
    method: 'POST',
    header: { 'Content-Type': 'multipart/form-data' },
    data: fd
  })
}

// 获取文章的详情
export const getArtDetailAPI = (id) => {
  return request({
    url: '/my/article/info',
    method: 'GET',
    params: {
      id
    }
  })
}
